Information Technology (IT), according to the Information Technology Association of America (ITAA), refers generally to the study, design, development, implementation, support, or management of computer-based information systems, particularly software applications and computer hardware. Most organizations of more than a handful of employees include an IT department responsible for a variety of tasks, including deployment of new computer hardware and applications, maintenance of one or more networks, monitoring of servers, and so forth. IT management applications, such as MICROSOFT System Center solutions, help organizations manage their IT environments, from physical to virtual, across desktops, devices, and datacenters. These applications are designed to provide a single window into IT services to allow proactive planning, deployment, management, and optimization across IT platforms. IT management applications capture and aggregate practical knowledge about infrastructure, policies, processes, and recommended practices so IT professionals can build manageable systems and automate operations to reduce costs, improve application availability, and enhance service delivery.
A common task in an IT department is the creation of scripts and workflows that help the IT department to automate some of its functions. For example, IT personnel may want to automate the steps involved in deploying new desktop computers for new employees, or the steps involved in deploying new servers to a data center. Today, IT personnel use a process to create these workflows that closely resembles computer programming. IT personnel often spend an extensive amount of time learning a particular scripting language, understanding control flow constructs (e.g., if, while, and goto statements), and understanding error and exception handling.
Although a programming environment provides a powerful environment for automation, the environment often does not map well to the way people think about IT problems. Many existing tools for authoring workflows have a graphical look and feel that makes the IT personnel think using the tools will be as easy as making a flow chart. Unfortunately, the terminology and design flow take their cues from developer tools. This often leads to disappointment and frustration, which wastes time and takes the IT professional away from other productive tasks he/she could be completing.
One area that demonstrates this disconnect is how existing tools handle control blocks. A basic workflow is a sequence of steps, where each step performs some function (e.g., reboot computer, install software, and check for updates). Control Block is the term that refers to a class of workflow controls that change a normal sequential flow of a workflow. For example, an IF/ELSE control block will change the flow of a workflow depending on some condition being true or false. Other examples of control blocks include FOR EACH, DO-UNTIL, WHILE, and TRY-CATCH. The typical experience includes the author placing one of these control blocks onto a design surface and then adding a sequence of steps that the control block influences within the control block's shape. This forces the author to first think about the workflow's control and then think about the work that needs to be done. This is similar to a developer's experience while developing code. First, the developer declares a control block (a loop for example), and then (in languages such as C++, C#, JavaScript, and Java) the developer places the lines of code within curly braces. However, many workflow authors (particularly those that have not had experience developing software or scripts) think instead about the work that needs to be done and then they go back and think about the control flow.
Another example of this disconnect is how error handling is authored. Traditional authoring environments have the main workflow and error handling workflows in different, disconnected views. The author views either the main workflow or the error workflow. While this is fine for a developer who develops using text, for an IT professional authoring a workflow visually, this is very difficult. Often what goes into the error handling workflow is determined by what is in the main workflow.